public class ReglesEnchainement {
	static public boolean estVerifiee(int jeu1, int jeu2) {
		int acc1 = jeu1 % 10;
		int acc2 = jeu2 % 10;
		int basse1 = (jeu1 / 10) % 100;
		int basse2 = (jeu2 / 10) % 100;
		int tenor1 = (jeu1 / 1000) % 100;
		int tenor2 = (jeu2 / 1000) % 100;
		int alto1 = (jeu1 / 100000) % 100;
		int alto2 = (jeu2 / 100000) % 100;

		if (Math.abs(basse1 - basse2) > 6)
			return false;
		if (Math.abs(tenor1 - tenor2) > 6)
			return false;
		if (Math.abs(alto1 - alto2) > 6)
			return false;

		if (Harmonisation.natureNote(basse1, acc2) != 0) {
			if (basse1 != basse2)
				return false;
		}
		if (Harmonisation.natureNote(tenor1, acc2) != 0) {
			if (tenor1 != tenor2)
				return false;
		}
		if (Harmonisation.natureNote(alto1, acc2) != 0) {
			if (alto1 != alto2)
				return false;
		}

		if (Math.abs(basse1 - basse2) > 2) {
			if (Harmonisation.natureNote(basse1, acc1) != Harmonisation
					.natureNote(basse2, acc2))
				return false;
		}
		if (Math.abs(tenor1 - tenor2) > 2) {
			if (Harmonisation.natureNote(tenor1, acc1) != Harmonisation
					.natureNote(tenor2, acc2))
				return false;
		}
		if (Math.abs(alto1 - alto2) > 2) {
			if (Harmonisation.natureNote(alto1, acc1) != Harmonisation
					.natureNote(alto2, acc2))
				return false;
		}

		switch (acc1) { // règle des enchainements d'accords
		case 1:
			return true;

		case 2:
			if (acc2 == 5 || acc2 == 7)
				return true;

		case 3:
			if (acc2 != 1)
				return true;

		case 4:
			return true;

		case 5:
			if (acc2 == 1 || acc2 == 3 || acc2 == 6)
				return true;

		case 6:
			if (acc2 == 2 || acc2 == 3 || acc2 == 4 || acc2 == 5)
				return true;

		case 7:
			if (acc2 == 2 || acc2 == 3)
				return true;

		}
		return false;
	}
}
